#ifndef VECTOR2D_H
#define VECTOR2D_H

#include "angulo.h"
#include "punto2d.h"
#include "geometria_global.h"

class GEOMETRIA_EXPORT Vector2d
{
public:
    Vector2d();

    Vector2d(const Angulo& angulo, double modulo);

    Vector2d(double dx, double dy);

    Vector2d(const Punto2d& p1, const Punto2d& p2);

    void setCoordenadas(double dx, double dy);

    Vector2d sumar(const Vector2d& otroVector) const;

    QString toString() const;

    Punto2d trasladarPunto(const Punto2d& p) const;

    double getModulo() const;

    void setModulo(double modulo);

    Angulo getAngulo() const;

    void setAngulo(const Angulo& angulo);

    double getX() const;

    double getY() const;

    Vector2d getVectorNormalizado() const;

    Vector2d getVectorInvertido() const;

    Vector2d multiplicar(double factor) const;

    bool esNulo() const;

    bool esValido() const { return !esNan(modulo); }

    static bool sonIguales(const Vector2d& vector1, const Vector2d& vector2);

    static Vector2d getVectorInvalido();

private:
    void normalizar();

private:
    Angulo angulo;
    double modulo;
};

#endif // VECTOR2D_H
